<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <link rel="stylesheet"
          href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.8/styles/default.min.css">
    <style>

        .sticky-card {
            position: -webkit-sticky; /* Safari */
            position: sticky;
            top: 0;
        }

        .jumbotron {
            padding: 1.5rem 1.5rem;
        }

        .container-wide {
            margin-top: 20px;
            max-width: 100%;
        }

        footer {
            padding-top: 3rem;
            padding-bottom: 3rem;
        }

        footer p {
            margin-bottom: .25rem;
        }

        .nav-pills .nav-link.active {
            background-color: #247ba0ff;
        }

        a {
            color: #247ba0ff;
        }

        @keyframes flickerAnimation {
            0% {
                opacity: 1;
            }
            50% {
                opacity: 0.5;
            }
            100% {
                opacity: 1;
            }
        }

        @-o-keyframes flickerAnimation {
            0% {
                opacity: 1;
            }
            50% {
                opacity: 0.5;
            }
            100% {
                opacity: 1;
            }
        }

        @-moz-keyframes flickerAnimation {
            0% {
                opacity: 1;
            }
            50% {
                opacity: 0.5;
            }
            100% {
                opacity: 1;
            }
        }

        @-webkit-keyframes flickerAnimation {
            0% {
                opacity: 1;
            }
            50% {
                opacity: 0.5;
            }
            100% {
                opacity: 1;
            }
        }

        g .node :hover {
            color: #247ba0ff;
            -webkit-animation: flickerAnimation 1s ease-in-out infinite;
            -moz-animation: flickerAnimation 1s ease-in-out infinite;
            -o-animation: flickerAnimation 1s ease-in-out infinite;
            animation: flickerAnimation 1s ease-in-out infinite;
        }

        g .label {
            pointer-events: none;
        }

        a:hover {
            color: #a04a4e;
        }

        .btn-primary {
            background-color: #247ba0ff;
            border-color: #247ba0ff;
        }

        .btn-primary:hover {
            color: #a04a4e;
            background-color: #247ba0ff;
            border-color: #247ba0ff;
        }

        .btn-primary:active {
            color: #a04a4e;
            background-color: #247ba0ff;
            border-color: #247ba0ff;
        }
    </style>
    <title>GNES Board</title>
    <meta name="description"
          content="GNES [jee-nes] is a cloud-native semantic search system based on deep neural network. It enables large-scale index and semantic search for text-to-text, image-to-image, video-to-video and any content form.">
    <meta name="author" content="Han Xiao">
    <meta name="keywords"
          content="GNES, neual network, deep learning, search, elastic search, cloud-native, kubernetes, docker swarm, docker container, semantic search, bert, vgg, alexnet, resnet, elmo, faiss, annoy">
    <meta property="og:type" content="website">
    <meta property="og:title" content="GNES is Generic Neural Elastic Search">
    <meta property="og:site_name" content="GNES is Generic Neural Elastic Search">
    <meta property="og:description"
          content="GNES [jee-nes] is a cloud-native semantic search system based on deep neural network. It enables large-scale index and semantic search for text-to-text, image-to-image, video-to-video and any content">
    <meta property="og:locale" content="default">
    <meta property="og:image" content="https://gnes.ai/img/thumbnail.png">
    <meta name="twitter:card" content="summary">
    <meta name="twitter:title" content="GNES is Generic Neural Elastic Search">
    <meta name="twitter:description"
          content="GNES [jee-nes] is a cloud-native semantic search system based on deep neural network. It enables large-scale index and semantic search for text-to-text, image-to-image, video-to-video and any content">
    <meta name="twitter:image" content="https://gnes.ai/img/thumbnail.png">
    <meta name="twitter:creator" content="@hxiao">
    <link rel="icon" type="image/png" href="https://gnes.ai/favicon.png">
</head>
<body>
<nav class="navbar navbar-light bg-light">
    <a class="navbar-brand" href="https://gnes.ai">
        <svg version="1.1" style="height: 30px" viewBox="0.0 0.0 432.0524934383202 157.11023622047244" fill="none"
             stroke="none" stroke-linecap="square" stroke-miterlimit="10"
             xmlns="http://www.w3.org/2000/svg">
            <clipPath id="p.0">
                <path d="m0 0l432.0525 0l0 157.11023l-432.0525 0l0 -157.11023z" clip-rule="nonzero"/>
            </clipPath>
            <g clip-path="url(#p.0)">
                <path fill="#000000" fill-opacity="0.0" d="m0 0l432.0525 0l0 157.11023l-432.0525 0z"
                      fill-rule="evenodd"/>
                <path fill="#000000" fill-opacity="0.0" d="m1.5575349 -30.816273l222.07874 0l0 141.00787l-222.07874 0z"
                      fill-rule="evenodd"/>
                <path fill="#247ba0"
                      d="m103.28733 87.46622q0 1.796875 -0.65625 3.34375q-0.640625 1.546875 -1.765625 2.671875q-1.125 1.125 -2.671875 1.78125q-1.546875 0.640625 -3.359375 0.640625l-60.453125 0q-2.3125 0 -4.999998 -0.546875q-2.671875 -0.546875 -5.28125 -1.703125q-2.609375 -1.171875 -5.0 -3.0q-2.375 -1.84375 -4.21875 -4.453125q-1.828125 -2.609375 -2.921875 -6.046875q-1.09375 -3.453125 -1.09375 -7.78125l0 -45.374996q0 -2.3125 0.546875 -4.984375q0.546875 -2.6875 1.703125 -5.296875q1.15625 -2.609375 3.015625 -4.984375q1.875 -2.390625 4.484375 -4.21875q2.625 -1.84375 6.03125 -2.9375q3.421875 -1.0937502 7.734373 -1.0937502l68.125 0l0 16.75l-68.125 0q-3.281248 0 -5.031248 1.75q-1.734375 1.734375 -1.734375 5.15625l0 45.23437q0 3.234375 1.765625 5.0q1.78125 1.765625 4.999998 1.765625l52.140625 0l0 -20.999996l-44.59375 0l0 -16.890625l52.90625 0q1.8125 0 3.359375 0.6875q1.546875 0.671875 2.671875 1.828125q1.125 1.15625 1.765625 2.671875q0.65625 1.515625 0.65625 3.25l0 37.781246zm109.82423 1.28125q0 1.8125 -0.6875 3.359375q-0.671875 1.546875 -1.796875 2.671875q-1.125 1.125 -2.671875 1.765625q-1.546875 0.6562576 -3.28125 0.6562576q-1.546875 0 -3.125 -0.5937576q-1.578125 -0.578125 -2.8125 -1.859375l-61.234375 -63.937496l0 65.09375l-16.750008 0l0 -85.265625q0 -2.578125 1.453125 -4.671875q1.453125 -2.1093752 3.703125 -3.1406252q2.3906326 -0.953125 4.8906326 -0.46875q2.515625 0.46875 4.328125 2.3437502l61.234375 63.874996l0 -65.09375l16.75 0l0 85.265625z"
                      fill-rule="nonzero"/>
                <path fill="#000000" fill-opacity="0.0" d="m-0.036772702 107.88714l436.31497 0l0 43.71653l-436.31497 0z"
                      fill-rule="evenodd"/>
                <path fill="#247ba0"
                      d="m28.70482 132.7015l-4.359375 0l0 -3.984375q0 -0.8593674 -0.296875 -1.1249924q-0.28125 -0.265625 -1.140625 -0.265625l-2.453125 0q-0.859375 0 -1.15625 0.265625q-0.28125 0.265625 -0.28125 1.1249924l0 20.5q0 0.859375 0.28125 1.125q0.296875 0.265625 1.15625 0.265625l2.453125 0q0.859375 0 1.140625 -0.265625q0.296875 -0.265625 0.296875 -1.125l0 -7.34375l-2.40625 0l0 -3.359375l6.765625 0l0 11.234375q0 4.265625 -4.453125 4.265625l-5.140625 0q-4.468751 0 -4.468751 -4.265625l0 -21.609375q0 -4.2187424 4.468751 -4.2187424l5.140625 0q4.453125 0 4.453125 4.2187424l0 4.5625zm8.507917 -2.15625l4.703125 0q4.515625 0 4.515625 4.265625l0 8.78125l-9.46875 0l0 5.578125q0 0.8125 0.28125 1.109375q0.296875 0.28125 1.171875 0.28125l2.203125 0q0.859375 0 1.140625 -0.28125q0.296875 -0.296875 0.296875 -1.15625l0 -1.921875l4.21875 0l0 2.546875q0 4.21875 -4.453125 4.21875l-4.609375 0q-4.46875 0 -4.46875 -4.21875l0 -14.9375q0 -4.265625 4.46875 -4.265625zm-0.25 9.890625l5.1875 0l0 -5.09375q0 -0.8125 -0.265625 -1.09375q-0.265625 -0.296875 -1.125 -0.296875l-2.34375 0q-0.875 0 -1.171875 0.296875q-0.28125 0.28125 -0.28125 1.09375l0 5.09375zm20.451904 -9.890625l1.6875 0q4.359375 0 4.359375 4.265625l0 19.15625l-4.3125 0l0 -18.53125q0 -0.859375 -0.296875 -1.125q-0.28125 -0.265625 -1.140625 -0.265625l-1.6875 0q-0.859375 0 -1.21875 0.390625q-0.359375 0.375 -0.359375 1.296875l0 18.234375l-4.328125 0l0 -23.421875l4.328125 0l0 1.875q0.625 -1.875 2.96875 -1.875zm14.59816 0l4.703125 0q4.515625 0 4.515625 4.265625l0 8.78125l-9.46875 0l0 5.578125q0 0.8125 0.28125 1.109375q0.296875 0.28125 1.171875 0.28125l2.203125 0q0.859375 0 1.140625 -0.28125q0.296875 -0.296875 0.296875 -1.15625l0 -1.921875l4.21875 0l0 2.546875q0 4.21875 -4.453125 4.21875l-4.609375 0q-4.46875 0 -4.46875 -4.21875l0 -14.9375q0 -4.265625 4.46875 -4.265625zm-0.25 9.890625l5.1875 0l0 -5.09375q0 -0.8125 -0.265625 -1.09375q-0.265625 -0.296875 -1.125 -0.296875l-2.34375 0q-0.875 0 -1.171875 0.296875q-0.28125 0.28125 -0.28125 1.09375l0 5.09375zm21.264404 -9.9375l0.96875 0l0 3.734375l-1.734375 0q-3.015625 0 -3.015625 3.5625l0 16.171875l-4.328125 0l0 -23.421875l4.328125 0l0 2.875q0.375 -1.25 1.359375 -2.078125q0.984375 -0.84375 2.421875 -0.84375zm3.2209015 -4.4218674l0 -4.265625l4.515625 0l0 4.265625l-4.515625 0zm4.421875 27.890617l-4.328125 0l0 -23.421875l4.328125 0l0 23.421875zm17.465897 -16.03125l-4.265625 0l0 -2.5q0 -0.859375 -0.296875 -1.125q-0.28125 -0.265625 -1.15625 -0.265625l-2.0625 0q-0.859375 0 -1.15625 0.265625q-0.28125 0.265625 -0.28125 1.125l0 13.640625q0 0.859375 0.28125 1.125q0.296875 0.265625 1.15625 0.265625l2.0625 0q0.875 0 1.15625 -0.265625q0.296875 -0.265625 0.296875 -1.125l0 -2.5l4.265625 0l0 3.171875q0 4.21875 -4.515625 4.21875l-4.5625 0q-4.453125 0 -4.453125 -4.21875l0 -14.9375q0 -4.265625 4.453125 -4.265625l4.5625 0q4.515625 0 4.515625 4.265625l0 3.125zm21.651794 -14.015617l3.984375 0l0 30.046867l-4.375 0l-6.328125 -21.703125l0 21.703125l-3.984375 0l0 -30.046867l4.5625 0l6.140625 21.078117l0 -21.078117zm12.961288 6.6249924l4.703125 0q4.515625 0 4.515625 4.265625l0 8.78125l-9.46875 0l0 5.578125q0 0.8125 0.28125 1.109375q0.296875 0.28125 1.171875 0.28125l2.203125 0q0.859375 0 1.140625 -0.28125q0.296875 -0.296875 0.296875 -1.15625l0 -1.921875l4.21875 0l0 2.546875q0 4.21875 -4.453125 4.21875l-4.609375 0q-4.46875 0 -4.46875 -4.21875l0 -14.9375q0 -4.265625 4.46875 -4.265625zm-0.25 9.890625l5.1875 0l0 -5.09375q0 -0.8125 -0.265625 -1.09375q-0.265625 -0.296875 -1.125 -0.296875l-2.34375 0q-0.875 0 -1.171875 0.296875q-0.28125 0.28125 -0.28125 1.09375l0 5.09375zm22.139404 -9.890625l4.3125 0l0 23.421875l-4.3125 0l0 -1.875q-0.625 1.875 -2.984375 1.875l-1.71875 0q-4.328125 0 -4.328125 -4.21875l0 -19.203125l4.328125 0l0 18.53125q0 0.859375 0.28125 1.125q0.28125 0.265625 1.15625 0.265625l1.671875 0q0.875 0 1.234375 -0.375q0.359375 -0.390625 0.359375 -1.3125l0 -18.234375zm16.645035 -0.046875l0.96875 0l0 3.734375l-1.734375 0q-3.015625 0 -3.015625 3.5625l0 16.171875l-4.328125 0l0 -23.421875l4.328125 0l0 2.875q0.375 -1.25 1.359375 -2.078125q0.984375 -0.84375 2.421875 -0.84375zm12.0490265 0.046875l4.328125 0l0 23.421875l-4.328125 0l0 -1.875q-0.625 1.875 -2.96875 1.875l-1.734375 0q-4.3125 0 -4.3125 -4.21875l0 -14.9375q0 -4.265625 4.3125 -4.265625l1.734375 0q2.34375 0 2.96875 1.875l0 -1.875zm-3.265625 19.921875l1.6875 0q0.859375 0 1.21875 -0.375q0.359375 -0.390625 0.359375 -1.3125l0 -13.046875q0 -0.921875 -0.359375 -1.296875q-0.359375 -0.390625 -1.21875 -0.390625l-1.6875 0q-0.859375 0 -1.15625 0.265625q-0.28125 0.265625 -0.28125 1.125l0 13.640625q0 0.859375 0.28125 1.125q0.296875 0.265625 1.15625 0.265625zm16.139404 3.5l-4.328125 0l0 -32.109367l4.328125 0l0 32.109367zm15.925903 -3.5l8.6875 0l0 3.5l-13.046875 0l0 -30.046867l12.71875 0l0 3.5l-8.359375 0l0 9.265617l6.921875 0l0 3.5l-6.921875 0l0 10.28125zm16.04216 3.5l-4.328125 0l0 -32.109367l4.328125 0l0 32.109367zm12.950272 -23.421875l4.328125 0l0 23.421875l-4.328125 0l0 -1.875q-0.625 1.875 -2.96875 1.875l-1.734375 0q-4.3125 0 -4.3125 -4.21875l0 -14.9375q0 -4.265625 4.3125 -4.265625l1.734375 0q2.34375 0 2.96875 1.875l0 -1.875zm-3.265625 19.921875l1.6875 0q0.859375 0 1.21875 -0.375q0.359375 -0.390625 0.359375 -1.3125l0 -13.046875q0 -0.921875 -0.359375 -1.296875q-0.359375 -0.390625 -1.21875 -0.390625l-1.6875 0q-0.859375 0 -1.15625 0.265625q-0.28125 0.265625 -0.28125 1.125l0 13.640625q0 0.859375 0.28125 1.125q0.296875 0.265625 1.15625 0.265625zm19.639404 -1.203125l0 -3.890625q0 -0.859375 -0.296875 -1.125q-0.28125 -0.265625 -1.140625 -0.265625l-2.453125 0q-4.46875 0 -4.46875 -4.21875l0 -4.953125q0 -4.265625 4.46875 -4.265625l3.5 0q4.515625 0 4.515625 4.265625l0 2.265625l-4.21875 0l0 -1.828125q0 -0.859375 -0.296875 -1.125q-0.28125 -0.265625 -1.140625 -0.265625l-1.15625 0q-0.859375 0 -1.15625 0.265625q-0.28125 0.265625 -0.28125 1.125l0 4.03125q0 0.859375 0.28125 1.125q0.296875 0.265625 1.15625 0.265625l2.5 0q4.40625 0 4.40625 4.265625l0 4.8125q0 4.21875 -4.453125 4.21875l-3.5625 0q-4.453125 0 -4.453125 -4.21875l0 -2.3125l4.21875 0l0 1.828125q0 0.859375 0.28125 1.125q0.296875 0.265625 1.15625 0.265625l1.15625 0q0.859375 0 1.140625 -0.265625q0.296875 -0.265625 0.296875 -1.125zm15.837769 -15.21875l-3.21875 0l0 14.828125q0 0.875 0.265625 1.140625q0.265625 0.25 1.125 0.25l1.828125 0l0 3.703125l-3.078125 0q-4.5 0 -4.5 -4.21875l0 -15.703125l-2.21875 0l0 -3.5l2.21875 0l0 -3.9843674l4.359375 0l0 3.9843674l3.21875 0l0 3.5zm2.496399 -7.9687424l0 -4.265625l4.515625 0l0 4.265625l-4.515625 0zm4.421875 27.890617l-4.328125 0l0 -23.421875l4.328125 0l0 23.421875zm17.465881 -16.03125l-4.265625 0l0 -2.5q0 -0.859375 -0.296875 -1.125q-0.28125 -0.265625 -1.15625 -0.265625l-2.0625 0q-0.859375 0 -1.15625 0.265625q-0.28125 0.265625 -0.28125 1.125l0 13.640625q0 0.859375 0.28125 1.125q0.296875 0.265625 1.15625 0.265625l2.0625 0q0.875 0 1.15625 -0.265625q0.296875 -0.265625 0.296875 -1.125l0 -2.5l4.265625 0l0 3.171875q0 4.21875 -4.515625 4.21875l-4.5625 0q-4.453125 0 -4.453125 -4.21875l0 -14.9375q0 -4.265625 4.453125 -4.265625l4.5625 0q4.515625 0 4.515625 4.265625l0 3.125zm19.589294 11.140625l0 -7.34375q0 -0.875 -0.265625 -1.125q-0.265625 -0.265625 -1.125 -0.265625l-3.5625 0q-4.359375 0 -4.359375 -4.28125l0 -7.921875q0 -4.2187424 4.453125 -4.2187424l4.703125 0q4.46875 0 4.46875 4.2187424l0 4.421875l-4.359375 0l0 -3.75q0 -0.8593674 -0.296875 -1.1249924q-0.28125 -0.265625 -1.15625 -0.265625l-2.015625 0q-0.859375 0 -1.15625 0.265625q-0.28125 0.265625 -0.28125 1.1249924l0 6.671875q0 0.875 0.28125 1.140625q0.296875 0.25 1.15625 0.25l3.515625 0q4.40625 0 4.40625 4.234375l0 8.640625q0 4.21875 -4.5 4.21875l-4.65625 0q-4.46875 0 -4.46875 -4.21875l0 -4.421875l4.359375 0l0 3.75q0 0.859375 0.28125 1.125q0.296875 0.265625 1.171875 0.265625l2.015625 0q0.859375 0 1.125 -0.265625q0.265625 -0.265625 0.265625 -1.125zm12.671814 -18.53125l4.703125 0q4.515625 0 4.515625 4.265625l0 8.78125l-9.46875 0l0 5.578125q0 0.8125 0.28125 1.109375q0.296875 0.28125 1.171875 0.28125l2.203125 0q0.859375 0 1.140625 -0.28125q0.296875 -0.296875 0.296875 -1.15625l0 -1.921875l4.21875 0l0 2.546875q0 4.21875 -4.453125 4.21875l-4.609375 0q-4.46875 0 -4.46875 -4.21875l0 -14.9375q0 -4.265625 4.46875 -4.265625zm-0.25 9.890625l5.1875 0l0 -5.09375q0 -0.8125 -0.265625 -1.09375q-0.265625 -0.296875 -1.125 -0.296875l-2.34375 0q-0.875 0 -1.171875 0.296875q-0.28125 0.28125 -0.28125 1.09375l0 5.09375zm21.889404 -9.890625l4.328125 0l0 23.421875l-4.328125 0l0 -1.875q-0.625 1.875 -2.96875 1.875l-1.734375 0q-4.3125 0 -4.3125 -4.21875l0 -14.9375q0 -4.265625 4.3125 -4.265625l1.734375 0q2.34375 0 2.96875 1.875l0 -1.875zm-3.265625 19.921875l1.6875 0q0.859375 0 1.21875 -0.375q0.359375 -0.390625 0.359375 -1.3125l0 -13.046875q0 -0.921875 -0.359375 -1.296875q-0.359375 -0.390625 -1.21875 -0.390625l-1.6875 0q-0.859375 0 -1.15625 0.265625q-0.28125 0.265625 -0.28125 1.125l0 13.640625q0 0.859375 0.28125 1.125q0.296875 0.265625 1.15625 0.265625zm19.920654 -19.96875l0.96875 0l0 3.734375l-1.734375 0q-3.015625 0 -3.015625 3.5625l0 16.171875l-4.328125 0l0 -23.421875l4.328125 0l0 2.875q0.375 -1.25 1.359375 -2.078125q0.984375 -0.84375 2.421875 -0.84375zm16.564636 7.4375l-4.265625 0l0 -2.5q0 -0.859375 -0.296875 -1.125q-0.28125 -0.265625 -1.15625 -0.265625l-2.0625 0q-0.859375 0 -1.15625 0.265625q-0.28125 0.265625 -0.28125 1.125l0 13.640625q0 0.859375 0.28125 1.125q0.296875 0.265625 1.15625 0.265625l2.0625 0q0.875 0 1.15625 -0.265625q0.296875 -0.265625 0.296875 -1.125l0 -2.5l4.265625 0l0 3.171875q0 4.21875 -4.515625 4.21875l-4.5625 0q-4.453125 0 -4.453125 -4.21875l0 -14.9375q0 -4.265625 4.453125 -4.265625l4.5625 0q4.515625 0 4.515625 4.265625l0 3.125zm10.894897 -7.390625l1.6875 0q4.359375 0 4.359375 4.265625l0 19.15625l-4.3125 0l0 -18.53125q0 -0.859375 -0.296875 -1.125q-0.28125 -0.265625 -1.140625 -0.265625l-1.6875 0q-0.859375 0 -1.21875 0.390625q-0.359375 0.375 -0.359375 1.296875l0 18.234375l-4.328125 0l0 -32.109367l4.328125 0l0 10.562492q0.625 -1.875 2.96875 -1.875z"
                      fill-rule="nonzero"/>
                <path fill="#247ba0"
                      d="m228.75363 22.209122l0 13.416939l48.110382 14.557167l49.405823 -14.946571l0 -13.985888l-48.59958 14.701738z"
                      fill-rule="evenodd"/>
                <path fill="#247ba0"
                      d="m228.75381 46.063644l0 13.418217l48.110992 14.556942l49.405304 -14.948257l0 -13.985622l-48.024323 14.529552z"
                      fill-rule="evenodd"/>
                <path fill="#247ba0"
                      d="m228.75381 69.91849l0 13.418213l48.110992 14.556946l49.405304 -14.948257l0 -13.985626l-48.024323 14.529556z"
                      fill-rule="evenodd"/>
                <path fill="#247ba0" d="m229.95831 13.17589l47.46994 -13.011213l47.46994 13.011213l-47.46994 13.011211z"
                      fill-rule="evenodd"/>
                <path fill="#1c617f" d="m277.0766 36.125057l0 13.631458l48.307617 -14.52219l0.290802 -13.927593z"
                      fill-rule="evenodd"/>
                <path fill="#1c617f" d="m277.0766 59.817112l0 13.631458l48.307617 -14.52219l0.290802 -13.927593z"
                      fill-rule="evenodd"/>
                <path fill="#1c617f" d="m277.0766 83.80052l0 13.631454l48.307617 -14.522186l0.290802 -13.927597z"
                      fill-rule="evenodd"/>
                <path fill="#000000" fill-opacity="0.0"
                      d="m330.24857 -30.817791l108.409424 0l0 141.00787l-108.409424 0z" fill-rule="evenodd"/>
                <path fill="#247ba0"
                      d="m431.631 68.69907q0 4.96875 -1.265625 8.9375q-1.25 3.953125 -3.3125 6.984375q-2.0625 3.03125 -4.828125 5.15625q-2.765625 2.125 -5.734375 3.484375q-2.96875 1.34375 -6.03125 2.0q-3.0625 0.640625 -5.765625 0.640625l-64.640625 0l0 -16.765625l64.640625 0q4.828125 0 7.5 -2.828125q2.6875 -2.84375 2.6875 -7.609375q0 -2.3125 -0.71875 -4.25q-0.703125 -1.9374962 -2.03125 -3.3437462q-1.3125 -1.421875 -3.21875 -2.1875q-1.90625 -0.78125 -4.21875 -0.78125l-38.546875 0q-4.0625 0 -8.765625 -1.453125q-4.703125 -1.453125 -8.734375 -4.671875q-4.03125 -3.21875 -6.703125 -8.4375q-2.671875 -5.234375 -2.671875 -12.765625q0 -7.546875 2.671875 -12.734375q2.671875 -5.1875 6.703125 -8.4375q4.03125 -3.265625 8.734375 -4.703125q4.703125 -1.453125 8.765625 -1.453125l57.046875 0l0 16.75l-57.046875 0q-4.765625 0 -7.4375 2.90625q-2.671875 2.890625 -2.671875 7.671875q0 4.828125 2.671875 7.640625q2.671875 2.796875 7.4375 2.796875l38.546875 0l0.125 0q2.703125 0.0625 5.734375 0.75q3.03125 0.671875 6.03125 2.09375q3.0 1.40625 5.703125 3.578125q2.703125 2.15625 4.796875 5.1875q2.09375 3.015625 3.3125 6.953125q1.234375 3.9375 1.234375 8.890621z"
                      fill-rule="nonzero"/>
            </g>
        </svg>
    </a>
    <ul class="nav nav-pills" id="pills-tab" role="tablist">
        <li class="nav-item">
            <a class="nav-link active" id="pills-flow-tab" data-toggle="pill" href="#pills-flow" role="tab">Work
                Flow</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" id="pills-shell-tab" data-toggle="pill" href="#pills-shell" role="tab">
                Shell
                Script</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" id="pills-docker-tab" data-toggle="pill" href="#pills-docker" role="tab">
                Docker Swarm/Compose</a>
        </li>
        <li class="nav-item">
            <a class="nav-link" id="pills-k8s-tab" data-toggle="pill" href="#pills-k8s" role="tab">
                Kubernetes
                Config</a>
        </li>
    </ul>
</nav>
<div class="container container-wide">
    <div class="row">
        <div class="col-3">
            <div class="card sticky-card">
                <div class="card-header">
                    YAML config
                </div>
                <div class="card-body">
                    <form action="/generate" method="post" class="board-form">
                        <div class="card-title">
                            <div class="btn-group" role="group" aria-label="Basic example">
                                <button type="button" class="btn btn-secondary"
                                        data-clipboard-target="#simple-yaml-config">
                                    Copy
                                </button>
                                <button type="submit" class="btn btn-primary">Generate</button>
                            </div>
                        </div>
                        <div class="card-text">
                            <div class="form-group row">
                            <textarea name="yaml-config" class="form-control" id="simple-yaml-config" rows="20"
                                      placeholder="your YAML config here" required autofocus
                                      style="font-family: monospace, monospace">
{{gnes-yaml}}
                            </textarea>
                            </div>
                            <div class="form-group row">
                                <label for="mermaid_direction">Rendering direction</label>
                                <select name="mermaid_direction" class="form-control" id="mermaid_direction">
                                    <option>Top-down</option>
                                    <option>Left-right</option>
                                </select>
                            </div>
                            <div class="form-group row">
                                <label for="docker-image">Docker image</label>
                                <input name="docker-image" type="text" class="form-control" id="docker-image"
                                       value="{{gnes-image}}">
                            </div>

                        </div>
                    </form>
                </div>
            </div>
        </div>
        <div class="col-9">
            <div class="tab-content" id="pills-tabContent">

                <div class="tab-pane fade show active" id="pills-flow" role="tabpanel" aria-labelledby="pills-home-tab">
                    <div class="jumbotron">

                        <p class="lead">This is the workflow generated from your input YAML config, which helps you
                            to understand how microservices work together in GNES.</p>
                    </div>
                    <div class="card">
                        <div class="card-header">
                            Workflow
                        </div>
                        <div class="card-body">
                            <div class="mermaid">
                                {{gnes-mermaid}}
                            </div>
                        </div>
                    </div>
                </div>
                <div class="tab-pane fade" id="pills-shell" role="tabpanel">
                    <div class="jumbotron">

                        <p class="lead">This is a Bash script generated from your YAML config.
                            You can use it to start a GNES server on a local machine.</p>
                        <hr class="my-4">
                        <p> 1. Install GNES via <code>pip install gnes</code><br>
                            2. Create a new file say <code>run.sh</code><br>
                            3. Copy the following content to it and run it via <code>bash ./run.sh</code>.</p>
                    </div>
                    <div class="card">
                        <div class="card-header">
                            Shell script
                        </div>
                        <div class="card-body">
                            <button type="button" class="btn btn-primary" data-clipboard-target="#shell-code">
                                Copy to Clipboard
                            </button>
                            <pre>
                    <code class="bash" id="shell-code">
{{gnes-shell}}
                    </code>
                </pre>
                        </div>
                    </div>
                </div>

                <div class="tab-pane fade" id="pills-docker" role="tabpanel">
                    <div class="jumbotron">

                        <p class="lead">This is a docker-compose YAML file generated from your YAML config.
                            You can use it to start a Docker Swarm distributed on multiple machines.</p>
                        <hr class="my-4">
                        <p> 1. Install Docker and Docker Swarm<br>
                            2. Create a new file say <code>my-gnes.yml</code><br>
                            3. Copy the following content to it<br>
                            4. Run <code>docker stack deploy --compose-file my-gnes.yml gnes-531</code>.</p>
                    </div>
                    <div class="card">
                        <div class="card-header">
                            Docker-Swarm/Compose config
                        </div>
                        <div class="card-body">
                            <button type="button" class="btn btn-primary" data-clipboard-target="#docker-code">
                                Copy to Clipboard
                            </button>
                            <pre>
                    <code class="yaml" id="docker-code">
{{gnes-docker}}
                    </code>
                </pre>
                        </div>
                    </div>
                </div>

                <div class="tab-pane fade" id="pills-k8s" role="tabpanel">
                    <div class="jumbotron">
                        <p class="lead">The generation of Kubenetes config is currently under development.</p>
                    </div>
                    <div class="card">
                        <div class="card-header">
                            Docker-Swarm/Docker-compose config
                        </div>
                        <div class="card-body">
                            <button type="button" class="btn btn-primary" data-clipboard-target="#k8s-code">
                                Copy to Clipboard
                            </button>
                            <pre>
                    <code class="yaml" id="k8s-code">
{{gnes-k8s}}
                    </code>
                </pre>
                        </div>
                    </div>
                </div>
            </div>


        </div>

    </div>
</div>

<footer class="text-muted bg-light" style="margin-top: 20px">
    <div class="container">
        <p class="float-right">
            <a href="#">Back to top</a>
        </p>
        <p>Page is generated at {{gnes-timestamp}} with GNES v{{gnes-version}}.</p>
        <p>GNES is Generic Neural Elastic Search. GNES © 2019 is licensed under the Apache License, Version 2.0</p>
        <p>New to GNES? <a href="https://gnes.ai">Visit the homepage</a> or read our <a
                href="https://github.com/gnes-ai/gnes">getting started guide on Github</a>.</p>
    </div>
</footer>


<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
        integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
        crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
        integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
        crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
        crossorigin="anonymous"></script>
<script src="https://unpkg.com/mermaid@8.1.0/dist/mermaid.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.8/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script>
<script>
    mermaid.initialize({
        startOnLoad: true, flowchart: {
            curve: 'basis'
        }
    });
    hljs.initHighlightingOnLoad();
    new ClipboardJS('.btn');
</script>
</body>
</html>